Filter

✒️ 2025-05-26 09:14 내용 수정


HTTP 요청과 응답을 변경할 수 있는 재사용 클래스

메서드 설명
doFilter(ServletRequest request, ServletResponse response, FilterChain chain) Container에 의해 호출됨. 필터의 기능을 수행함
init(FilterConfig filterConfig) 필터 초기화. 필터의 서비스가 시작되면 호출됨
destroy() 필터의 자원을 반납. 필터의 서비스가 끝나면 호출됨

filter.png

package Test;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

@WebFilter("/test")
public class TestFilter implements Filter{
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
	
		// 1. 전처리 작업
		long startTime = System.currentTimeMillis();
	
		// 2. Servlet 호출
		chain.doFilter(request, response);
	
		// 3. 후처리 작업
		System.out.println("[" + ((HttpServletRequest)request).getRequestURI() + "]");
		System.out.println("Servlet 작업 소요 시간 : " + (System.currentTimeMillis() - startTime));
		
	}
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println("TestFilter가 호출됨");
	}
}
package Test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

@WebServlet("/test")
public class StringPrint extends HttpServlet{
	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		String str = "가나다라마바사";
		
		PrintWriter pw = res.getWriter();
		for(int i = 0; i < 10; i++) {
			pw.println(str.repeat(i));
		}
		pw.println("Servlet 수행 종료");
	}
}